Материалы курса «Подготовка к Аттестации по Платформе 8.2» – Раздел 3, задача 3.21 «Отпуска»

Это еще одна задача раздела “Расчетные задачи” – задача 3.21 “Отпуска”

Комментарии Павла
Задача просто отлично демонстрирует причины выбора периодичности регистра расчета.
Ну и наконец-то, мы рисуем диаграмму Ганта!

  • Изучите материалы задачи.
  • Вопросы, возникшие в ходе изучения этих материалов, задавайте в комментариях на текущей странице. Ответы преподавателя и комментарии других участников будут Вам доступны, только если Вы залогинены и у Вас есть доступ в Мастер-группу.
  • Общие вопросы по курсу (в т.ч. организационные) задавайте на стартовой странице.

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (64):

  1. Rokkie

    Павел, здравствуйте!
    Подскажите пожалуйста еще по такому вопросу, очень не однозначному, как выясняется:
    Когда следует создавать ПериодРегистрации в ТЧ Документа? При каких условиях в задаче?

    • GROOVY

      Не знаю. На мой взглад, период регистрации в ТЧ никогда не должен быть, так как один Регистратор не может регистрировать записи в разных периодах.

  2. enmelnik

    В предыдущей задаче Движения передавали напрямую в общий модуль расчета, в этой создаем набор записей, как правильней не пойму?

    • GROOVY

      Сейчас я могу рекомендовать передавать только ссылку и получать там набор записей.

    • GROOVY

      У Вас напутано с отбором по виду расчета. ВидРасчета.ВидРасчета… Там отбор по перечислению сравнивается с видомРасчетаСсылка.

  3. Heckfy78

    Добрый день.
    1. В оригинальном условии 3.31 сборник 2014г. Для отпуска “Средняя дневная ставка определяется как сумма начисленного за три предыдущих месяца гарантированного оклада, поделенная на количество РАБОЧИХ (а не ОТРАБОТАННЫХ) дней в трех предыдущих месяцах”. Откуда их брать?
    2. При переходящем отпуске (этом момент опущен на видео) контрой 24 дня для второй половины не работает. Как быть?

    • GROOVY

      1. Данные графика по базовому периоду.
      2. Сформулируйте вопрос по-другому. У нас в курсе не цель прорешать задачи и дать готовые решения, а показать механизмы решения, которые проверяет фирма 1С на экзаменах.

  4. Александр

    Как следует обрабатывать условия, подобные следующему:
    “Если сотрудник опоздал на работу, то за каждые целые 15 минут опоздания начисляется штраф в размере 50 рублей” ?

    • GROOVY

      В регистре сведений каждые 15 минут должны быть указаны отдельной строкой.

      • Александр

        Т.е. можно создать доп. РС с периодичностью день (не может же сотрудник дважды за день опоздать) и туда вручную заносить данные: Сотрудник, Опоздание(в минутах).

        А при расчете суммировать опоздание за месяц и делить на 15 минут, умножая полученное на 50.
        Может в таком случае использовать под это дело РН и получать просто обороты за месяц?

        Или я Вас не так понял? :)

        • GROOVY

          Нет. В регистре сведений где хранятся данные графика – эти самые данные графика должны быть не кратными 1 дню, а кратными 15 минутам. А дальше сработает простое вытеснение.

  5. krykovlev

    Здравствуйте Павел!
    Если по отпускам сделать месячную базу, на сколько правомерно будет для определения количества использованных дней отпуска просуммировать данные графика? Или лучше добавить реквизит и взять по нему сумму из физической таблицы?

    • GROOVY

      Как Вы _отработанные_ дни получите по данным графика?

      • krykovlev

        ВЫБРАТЬ
        ОНДанныеГрафика.Сотрудник,
        СУММА(ЕСТЬNULL(ОНДанныеГрафика.ЗначениеФактическийПериодДействия, 0)) КАК ДнейФакт
        ИЗ
        РегистрРасчета.ОснНачисления.ДанныеГрафика(
        Сотрудник = &Сотрудник
        И ВидРасчета = &ВидРасчета
        И ПериодДействияНачало >= &НачалоПериода
        И ПериодДействияКонец <= &КонецПериода) КАК ОНДанныеГрафика

        СГРУППИРОВАТЬ ПО
        ОНДанныеГрафика.Сотрудник

  6. tanar7

    Павел и еще вопрос. В этой задаче 3.21 рисовали Диаграмму Ганта. В условии к задаче сказано за “любой расчетной период” (вроде как отбор по периоду регистрации) ?, а мы брали по периоду действия.

    • GROOVY

      Возможно, я уже не помню. Можете поменять условие на любой период который Вам хочется.

  7. tanar7

    Павел, добрый день. Просьба помочь разобраться. В задачах по расчетам, есть пара предложений.”Ввод всех начислений происходит документом “Начисление зарплаты”” – здесь вопросов нет ), и – “Документ в расчетном периоде может быть один (сразу для всех видов расчета), а может быть несколько (по одному для каждого вида расчета).” -при этом механизм перерасчетов использовать не надо, и в одном документе документе могут быть данные за разные расчетные периоды.
    -Что требуется? Стандартно оклад и отпуск, отпуск вытесняет оклад, оклад база для отпуска. При введении разными документами можно сделать так, что один документ оклады, другой отпуска и для получения правильного результата, как минимум один надо проводить дважды.

    • GROOVY

      Требуется, чтобы Вы ввели либо один документ в месяце, либо несколько по оговоренным условиям. Цикличные перерасчеты в рамках задач экзамена учитывать не нужно.

  8. tanar7

    Павел, добрый день. Просьба помочь разобраться. В задачах по расчетам, используют термин “расчетный период”.
    1- фраза “Отчет может быть построен за любой расчетный период.” -Имеется ввиду, за любой период, кратный периоду регистрации?
    2 – фраза “В одном документе могут быть данные за разные расчетные периоды.”
    -Означает, что этом документе могут быть записи из разных периодов регистрации? То есть, необходимо указывать период регистрации в табличной части?

  9. Didinag

    Мне кажется, в решении есть одна фундаментальная проблема, которую в рамках предложенной схемы обойти не получится.

    Сейчас чтобы рассчитать отпуск, мы должны получить базу из двух разных регистров. Проблема состоит в том, что базовый период для них должен быть разный:
    – для получения базы из регистра ПростыеНачисления базовый период всегда строго равен 3 месяцам;
    – для получения базы из регистра Отпуска базовый период будет плавать от нуля дней до примерно одного года.

    Как задать для одной записи регистра два различных базовых периода – для меня, например, большая загадка (особенно, учитывая тот факт, что БазовыйПериодНачало и БазовыйПериодКонец – реквизиты стандартные).

    Я бы предложил другую схему решения:

    1) Мы отказываемся от идеи что, НакопленныеДниОтпуска – это классический показатель базы. Будем считать, что эта цифра нам нужна только для контрольных целей

    2) Мы отказываемся от идеи регистра с периодичность в один год

    3) Удаляем ПВР Отпуска и РР Отпуска (теперь они не нужны)

    4)
    – РР ПростыеНачисления переименовываем в ОсновныеНачисления
    – Включаем для него ПериодДействия (я бы все-таки это сделал,
    особенно учитывая замечание, которое сделали Денису Попову на
    экзамене – см. комментарии к этой задаче)
    – Теперь Отпуск у нас будет рассчитываться в
    РР ОсновныеНачиления

    5) Для хранения НакопленныхДнейОтпуска создаем оборотный регистр накопления и каждый раз вытаскиваем оттуда данные за произвольный интервал времени (имеется ввиду НачалоТекГода – НачалоТекМесяца)

    (Здесь была еще идея хранить НакопленныеДниОтпуска в реквизите РР ОсновныеНачисления, чтобы не создавать дополнительный регистр. Но тогда, если я не ошибаюсь, данные пришлось бы вытаскивать из физической таблицы, что мне кажется большим злом.)

    6) Перетекание отпуска из одного месяца в другой теперь
    реализуется несколькими записями в регистр

    Жду комментариев…

    • GROOVY

      Все красиво, кроме п.5. Что меня смущает сказать так не могу. Надо перерешать задачу еще раз.

      • Didinag

        Решил задачу второй раз. Ваши подозрения к п.5 оказались верны.
        Ни РН, ни РС для хранения НакопленныхДнейОтпуска не подходят. Проблема в том, что они никак не реагируют на перепроведение нашего документа )))

        На этот раз придумал способ хранить для каждого отпуска кол-во его дней в реквизите РР. Вроде как все работает.

  10. tanar7

    Павел, просьба помочь перевести некоторый фразы в билетах. При расчете дневной или часовой ставки для оклада, пишут, что это начальное значение оклада деленное на количестве рабочих (часов)дней в том же периоде, что и фактически отработанные дни. По логике это кол-во рабочих дней в периоде регистрации. Не важно, что сотрудник пришел на работу с 20 числа (и период действия с 20-31). Но опять же слышал, что одна из ошибок, использование периода регистрации вместо периода действия.

    • GROOVY

      Почему Вы решили, что речь про период регистрации? Рабочие часы в периоде действия и отработанные часы в периоде действия. Не путайте “период действия” и “фактический период действия”.

  11. tanar7

    Павел, добрый день. Вопрос. Есть вид расчета 1, никого не вытесняет и его никто не вытесняет. И ресурс – просто фиксированная сумма. Есть
    вид расчета 2, который получает базу от первого по периоду действия (может не совпадать с периодом регистрации и не кратен ему). Следовательно вид расчета 1 должен быть помещен в план видов расчета, у которого есть период действия ( иначе база будет получена по периоду регистрации). Это так?

    • GROOVY

      Если нет поля “ПериодДействия”, то логично предположить, что отбор при получении базы по нему невозможен.

      • tanar7

        Логика и тексты заданий в билетах, по моему мнению, находятся совершенно в разных местах. Просто в курсе, много раз говорилось, что если вид расчета сам никого не вытесняет и его никто, и для результата ему данные графика не нужны, то ему не место в плане видов расчета с периодом действия. Это будет считаться ошибкой. Но не поместив его туда, нельзя получить по нему базу с периодом действия.

  12. magrib

    Павел, добрый день!
    Проверял работу на вашей базе и возник вопрос по задаче.
    В случае если мы берем отпуск в январе, то база берется программой за прошлые 3 месяца – т.е. декабрь, ноябрь, октябрь предыдущего года.
    И условие 24 дня отпуска в календарный год не выполняется, т.к программа считает базу по дням отпуска за прошлый год, а должна за новый – начать подсчет дней отпуска заново.
    Я так понимаю, что так отрабатывает механизм зависимости по базе по периоду регистрации.

    Как можно собрать базу дней отпуска для января?

    • GROOVY

      Не могу сейчас проверить, но как мне помнится можно при получении базы добавить разрез по периоду, таким образом можно будет отделить дни полученные в прошлом и текущем годах.

      • magrib

        Если я правильно понимаю механизм разрезов, то он позволяет нам получить базу детально , с точностью до “разреза”, а здесь при указании базового периода за 3 мес. прошлого года она берется только за прошлый год (показатель КолДней не больше 24) и “резать” можно только записи прошлого года.

        • GROOVY

          Мы просто получим базу в 2 строки, за прошлый и текущий год.

  13. dimqa

    Вопрос по задаче 3.33
    Там охранники могут замещать друг друга…

    Можно ли делать так?:
    1) У производственного календаря 3 измерения: Дата, Сотрудник, Смена и ресурс: признак (рабочий/не рабочий)
    2) У смены реквизит – количество часов в смене
    3) В начале недели делать документ, в котором указывается 2 сотрудника, дата и смена в которую должно произойти замещение
    4) Этот документ меняет записи в регистре Производственный календарь: у одного сотрудника убирает рабочий день, другому добавляет

    Меня смущает 4й пункт, в котором при отмене проведения, записи не вернутся в исходное состояние

    • dimqa

      Думал сделать вид расчета “Замещение”, который вытесняет оклад, но я тут зашёл в тупик, тем более в задаче сказано, что информация вносится в начале недели

    • GROOVY

      Задачу 3.33 не решал, но думаю вам помогут перерасчеты.

      • dimqa

        Вроде разобрался как сделать:

        1) Два вида расчета
        а) первый (“Отсутствие”) вытесняет оклад, и записывает в ресурс количество вытесненных часов, которые не работал первый сотрудник
        б) Второй (“Замещение”) берет за базу “Отсутствие”
        2) В реквизит регистра записывается сотрудник, которого замещает текущий сотрудник.
        3) В запросе, “Сотрудник” будет являться не измерением а разрезом, и тогда получается всё хорошо.

        Вроде не ошибся

  14. bala35am

    Павел, добрый день. А если количество дней отпуска писать в оборотный рн, с разрезом по сотруднику ? И уже по нему проверять ?

    • GROOVY

      Эм… Опять я не понимаю… Мне контекста не хватает видимо.
      В обсуждаемой задаче, отпуск – это годовая база. Можем пообсуждать этот момент.

      • bala35am

        Может я что-то не понимаю, но в предыдущем комментарии было указано, что при проверке, цитирую: “оклад хоть фиксирован, но имеет продолжительность во времени (основное начисление), делать отдельный регистр для отпусков, да еще и с периодичностью год – неоптимально”.

        У меня сделано отпуск и оклад в одно регистре (периодичность месяц), количество дней отпуска в разрезе сотрудника я пишу в отдельный оборотный рн и по нему проверяю превышение. Хотя наверное количество дней отпуска можно было-бы вытащить и из регистра расчета.

      • bala35am

        Павел, Добрый день.

        Можно еще задать вопросы по задаче 3.46 ?)

        “За каждый рабочий день по графику в течение периода начисления сотрудникам предприятия полагается фиксированная сумма денег в качестве компенсации затрат на разговоры по мобильному телефону. Размер суммы в расчетном периоде не меняется и для каждого сотрудника должен быть указан в документе «Начисление зарплаты».”

        Правильно ли я понимаю, что компенсация имеет период действия ?

        За произвольный период отработанного времени (должен указываться в документе и может быть меньше периода ведения расчетов, например, всего несколько дней) сотрудникам компании начисляется премия процентом от всех начислений, сделанных за те же дни, за которые была начислена премия. Процент премии в течение периода расчетов не меняется. Вместо премии, за любой отработанный день, сотруднику может быть выплачена произвольная сумма денег.”

        Вот эта фраза “Вместо премии, за любой отработанный день, сотруднику может быть выплачена произвольная сумма денег.” – означает, что будет вытеснение ?

        • GROOVY

          1. Не могу понять где тут период действия, если сумма ни от чего не зависит.
          2. Вытеснение “премии” “произвольной суммой”? Думаю тут ближе получение базы с разрезами. Хотя задачу не решал еще, точно сказать не могу.

          • bala35am

            Павел спасибо за ответы.

            1) “За каждый рабочий день по графику в течение периода начисления сотрудникам предприятия полагается фиксированная сумма денег в качестве компенсации затрат на разговоры по мобильному телефону.”

            А как тогда получить количество рабочих дней ? Делать оклад базой (оклад это часы х часовую ставку) и добавлять еще один ресурс с количеством дней ?

            2) “Думаю тут ближе получение базы с разрезами.” не очень понял.

            3) А что по поводу 3.21 (первый вопрос) ?

            • GROOVY

              1. Рабочие дни нужно накопить при расчете окладов.
              2. Я про расчет премии говорил, хотя разрезы там ни к чему, так как в базу можно указать только нужные виды расчета. А вот вытеснения там никакого нет. В задаче не сказано, что нужно автоматизировать замещение премии произвольной суммой.
              3. Количество дней отпуска можно получить как базовые данные, если указать при получении базы разрез по видам расчета и просуммировать “отработанные” дни отпуска.

  15. Денис Попов

    Сдал экзамен на 4.
    Комментарий к решению был только касательно периодических расчетов.
    Задача попалась именно эта :).
    Вот комментарий:
    “Расчет. Решение оригинальное, но некорректное: оклад хоть фиксирован, но имеет продолжительность во времени (основное начисление), делать отдельный регистр для отпусков, да еще и с периодичностью год – неоптимально.” 

    По остальным задачам комментария не было. 

    • GROOVY

      Спасибо за отзыв. Попробуем переосмыслить задачу :)

      • rocknrollerman

        Очень интересный отзыв. Но не очень понятно, как делать в этом случае. лучше бы такой отзыв поместить где-то вначале, в комментарии, да еще добавить, как решать данную задачу правильно. Я так понял, надо обращаться непосредственно к регистру расчета и выборкой брать начисления по сотруднику и подразделению за год.

        • Rokkie

          Согласен, лучше бы наверх прицепить. Я вообще исп. 2 регистра. Один периодический (Оклад, Отпуск), второй ДопНачисления. Обращаясь к таблице База ставил Разрез по ВР. Оператором ВЫБОР анализировал от какого ВР приходятся Базовые данные:
          ВЫБОР
          КОГДА ОсновныеНачисленияБазаОсновныеНачисления.ВидРасчетаРазрез = &Оклад
          ТОГДА ЕСТЬNULL(ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0)
          ИНАЧЕ 0
          КОНЕЦ
          ;
          ВЫБОР
          КОГДА ОсновныеНачисленияБазаОсновныеНачисления.ВидРасчетаРазрез = &Оклад
          ТОГДА ЕСТЬNULL(ОсновныеНачисленияБазаОсновныеНачисления.ОтработаноДнейБаза, 0)
          ИНАЧЕ 0
          КОНЕЦ
          ;
          ВЫБОР
          КОГДА ОсновныеНачисленияБазаОсновныеНачисления.ВидРасчетаРазрез = &Отпуск
          ТОГДА ЕСТЬNULL(ОсновныеНачисленияБазаОсновныеНачисления.ДнейОтпускаБаза, 0)
          ИНАЧЕ 0
          КОНЕЦ
          Оставлю здесь, может кому и пригодится.

  16. Денис Попов

    Павел, есть три вопроса.

    1. Слегка удивился тому что при получении базы по периоду регистрации в базу попадают неожиданные для меня данные.

    Например, пробую для ПрофВзноса рассчитать сумму с базой: с 01.03.2012 по 31.03.2012 по периоду регистрации. Сумма рассчитывается от  фиксированного оклада в марте. Если же я делаю базу равной: с 02.03.2012 по 31.03.2012, то получаю НОЛЬ, т.к. фиксированный оклад с периодом регистрации = 01.03.2012 не попадает в базовый период.

    Не пойму, каким образом при расчете отпуска в базу с 01.02.2012 по 31.03.2012 попадают записи отпуска с периодом регистрации 01.01.2012 (периодичность год)? 

    2. Нужно ли учитывать такие случаи: Если отпуск берут в феврале, то база будет захватывать и предыдущий год => прошлые отгулянные отпуска также будут попадать в базу, что не  верно, исходя из задачи. Или это уже лишнее?

    3. В задаче сказано, что нужно учесть, что отпуск может переходить из одного месяца в другой. Ранее мы дробили отпуск по месяцам, а в данном решении это не имеет смысла, т.к. периодичность равна ГОД => нужно дробить запись по годам?

    • GROOVY

      1. Вы меня в тупик вопросом поставили… Мне нужен тайм-аут, пошел книги листать :)
      2. У нас условие про календарный год.
      3. При желании, в итоге ничего не поменяется.

      • Денис Попов

        1. Причем это касается только базы Отпусков, если вот базу ПрофВзносов настроить по периоду регистрации, то Отпускные не войдут в базу до тех пор, пока база не будет захватывать начало года.

        2. В том-то и дело. Человек берет отпуск за 2012 год в феврале. В базу попадает Ноябрь, Декабрь, Январь. За 2011 год в Сентябре он отгулял 24 дня. => При расчете отпуска в предложенном решении КоличествоОплачиваемыхДней будет = 0, т.к. база захватит отпускные 2011 года целиком. Нужно ли обрабатывать каким-то образом эту ситуацию или это уже лишнее? 

        • GROOVY

          1. Да, я же говорю, сам в шоке, перепроверю все и отвечу по этому пункту, когда ответ сформулируется :)
          2. Тут ситуация простая, если нужно переходный период обработать, то следует добавить разрез при получении базы по периоду действия. Я запишу видеокомментарий к задаче, так как мне кажется это важным моментом.

          Спасибо за правильные вопросы.

          • OlliVic

            Добрый день, Павел! Вы обещали видеокомментарий к задаче. Тоже остались вопросы, поднятые в обсуждении.

  17. kirillova_nn

    Павел, добрый день. Можно уточнить у Вас один момент, касающийся задач 3.33 и 3.34 из сборника. Вопрос по трактовке задания. В задаче 3.33 есть абзац “Не зависимо от отработанного времени сотрудникам предприятия ежемесячно выплачивается определенная сумма денег в качестве компенсации затрат на обмундирование ИЛИ за обеды. Обе компенсации начисляются в виде фиксированной суммы, указанной в док-те, и одновременно начислены быть не могут”. 
    1) За тем, что обе компенсации не могут быть начислены одновременно, должен следить пользователь или разработчик?
    2) Если разработчик, то подскажите, пожалуйста, нужно ли настраивать вытеснения для этих видов расчета (и возможно ли это)? или подразумевать под этими начислениями просто доп начисления (без периодов действий) и придумать свои правила  выбора той или иной компенсации (например большую по размеру), раз об этом ничего не сказано в задаче?
    В задаче 3.34 есть аналогичный абзац, только дополнен фразой, “…обе компенсации не могут быть начислены одновременно новым сотрудникам, если сотрудник отработал больше 100 дней, то он получает обе надбавки… “. Здесь очевидно, что за исполнением “не начислять обе надбавки” должен следить разработчик. Но вопросы у меня те же, что и по задаче 3.33. 
    Заранее спасибо.

    • GROOVY

      Следить надо. Но не вытеснениями, записи не будут обладать нужными свойствами, а базой.

  18. Денис Попов

    “Количество предоставляемых в год рабочих дней отпуска не должно превышать 24.”
    Для проверки нужно будет обращаться к физической таблице регистра расчета? или же накапливать отгулянные дни  в регистре накопления?

    • GROOVY

      И не первое и не второе. Накопленные дни отпуска – это классический показатель базы.

      • Денис Попов

        Ок. Допустим, создам ресурс “КоличествоДнейОтпуска”, но как мне его получить по базе, если отпуск расчитывается за 3 месяца, а Количество допустимых в год дней нужно проверить за год?

        • GROOVY

          За 3 месяца мы должны ОКЛАД взять! А отпуск рассчитывается за сколько угодно.То есть для оклада нам нужно нарезать базу так чтобы мы могли ее взять за 3 месяца (месяц), а у отпуска для проверки ранее использованных дней отпуска база должна быть нарезана за год.

  19. Денис Попов

    Почему не нужно рассчитывать отработанные по окладу дни?
    Откуда тогда брать данные для расчета Средне дневной ставки, ведь для расчета нужны именно отработанные дни?
    Или подразумевается, что раз сотрудники получают фиксированную оплату не зависимо от отработанных дней, тогда считаем, что отработали они в каждом месяце максимальное количество дней…?

     

    • GROOVY

      Отработанные дни “рассчитываются” так же как и сумма оклада. То есть никак. Данные о сумме и днях вводятся вручную. Ну представьте как в реальной жизни вводят табель.

      • Денис Попов

        Понял.
        Есть у меня особенность усложнять задачи… эх. 

        • GROOVY

          К сожалению такая особенность многим присуща.
          Но посудите сами, вытеснений нет, прогулов там и пр… Сумма “оклада” вводится эмпирически… Значит и с днями так же. Если бы дн надо было рассчитывать, то в чем проблема была бы добавить в задачу условие расчета оклада по дням?!

Комментарии закрыты